Skip to content

Introduce experimental API for adding actions to experimental Run UI#11204

Open
janfaracik wants to merge 41 commits intojenkinsci:masterfrom
janfaracik:run-app-bar
Open

Introduce experimental API for adding actions to experimental Run UI#11204
janfaracik wants to merge 41 commits intojenkinsci:masterfrom
janfaracik:run-app-bar

Conversation

@janfaracik
Copy link
Member

@janfaracik janfaracik commented Oct 15, 2025

This PR introduces an experimental API for adding actions to the experimental Run UI - actions are visible in the app bar and its overflow menu.

Screenshot 2025-10-29 at 16 36 37

WIP screenshot

I've been wanting to get this done for a long (long) time now, the intention is to provide a simple to use API for developers to add simple and complex actions to our Actionable objects.

An action can be as simple as taking the user to a new page, or it can be as complex as executing arbitrary JS or displays dialogs and modals.

Testing done

  • No regressions in legacy UI

Proposed changelog entries

  • Introduce experimental API for adding actions to experimental Run UI

Proposed changelog category

/label web-ui,rfe

Proposed upgrade guidelines

N/A

Submitter checklist

  • The Jira issue, if it exists, is well-described.
  • The changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developers, depending on the change) and are in the imperative mood (see examples). Fill in the Proposed upgrade guidelines section only if there are breaking changes or changes that may require extra steps from users during upgrade.
  • There is automated testing or an explanation as to why this change has no tests.
  • New public classes, fields, and methods are annotated with @Restricted or have @since TODO Javadocs, as appropriate.
  • New deprecations are annotated with @Deprecated(since = "TODO") or @Deprecated(forRemoval = true, since = "TODO"), if applicable.
  • New or substantially changed JavaScript is not defined inline and does not call eval to ease future introduction of Content Security Policy (CSP) directives (see documentation).
  • For dependency updates, there are links to external changelogs and, if possible, full differentials.
  • For new APIs and extension points, there is a link to at least one consumer.

Desired reviewers

@jenkinsci/sig-ux @daniel-beck

Before the changes are marked as ready-for-merge:

Maintainer checklist

  • There are at least two (2) approvals for the pull request and no outstanding requests for change.
  • Conversations in the pull request are over, or it is explicit that a reviewer is not blocking the change.
  • Changelog entries in the pull request title and/or Proposed changelog entries are accurate, human-readable, and in the imperative mood.
  • Proper changelog labels are set so that the changelog can be generated automatically.
  • If the change needs additional upgrade steps from users, the upgrade-guide-needed label is set and there is a Proposed upgrade guidelines section in the pull request title (see example).
  • If it would make sense to backport the change to LTS, a Jira issue must exist, be a Bug or Improvement, and be labeled as lts-candidate to be considered (see query).

@comment-ops-bot comment-ops-bot bot added web-ui The PR includes WebUI changes which may need special expertise rfe For changelog: Minor enhancement. use `major-rfe` for changes to be highlighted labels Oct 15, 2025
@janfaracik janfaracik added the squash-merge-me Unclean or useless commit history, should be merged only with squash-merge label Oct 17, 2025
return null;
}

default Group getGroup() {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be part of Action? Or into its own interface?

return null;
}

default Group getGroup() {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the best way of grouping/ordering items?

@janfaracik janfaracik marked this pull request as ready for review October 29, 2025 16:38
@@ -106,102 +111,56 @@ public void generateResponse(StaplerRequest2 req, StaplerResponse2 rsp, Object o
}

public ContextMenu add(String url, String text) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file needs validating (maybe a clean up if possible without breaking plugins...)

@timja timja requested review from a team October 30, 2025 21:59
@dhanush-raja-a
Copy link
Contributor

Hi @janfaracik,

I tested the build page with new-build-page.flag enabled and disabled on the current master.
I’m still unable to see “Keep this build forever” in the new Run UI (app bar/overflow),
so I assume this is part of the ongoing work in this PR and not yet fully wired.

Please let me know if you’d like help with:

  • testing the behavior once changes are complete
  • adding a test for KeepRunAction / StopRunAction
  • or validating the UI behavior locally

Happy to assist.

@timja
Copy link
Member

timja commented Feb 2, 2026

I’m still unable to see “Keep this build forever”

Its in the overflow:

image

@timja
Copy link
Member

timja commented Feb 2, 2026

or validating the UI behavior locally

Any testing is appreciated

@timja timja marked this pull request as ready for review February 2, 2026 09:16
Copy link
Member

@timja timja left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've pushed a commit to mark the API as beta.

I think we're good to go here, more feedback is welcome, happy to change the design.

@timja timja requested a review from a team February 17, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rfe For changelog: Minor enhancement. use `major-rfe` for changes to be highlighted squash-merge-me Unclean or useless commit history, should be merged only with squash-merge web-ui The PR includes WebUI changes which may need special expertise

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants